package 进阶阶段;

import java.io.*;

public class demo24IO流_缓冲流 {
    public static void main(String[] args) throws Exception {
        //缓冲流,也叫高效流，是对4个基本的FileXxx 流的增强，所以也是4个流，按照数据类型分类：
        //字节缓冲流：BufferedInputStream，BufferedOutputStream
        //字符缓冲流：BufferedReader，BufferedWriter
            //缓冲流的基本原理，都是在创建流对象的时候，会创建一个内置8192的默认大小的缓冲区数组，通过
            //缓冲区读写，减少系统IO次数(输入输出次数)，从而提高读写的效率

        System.out.println("字节缓冲流");

        //字节缓冲流
            //BufferedInputStream(InputStream in)：创建一个新的缓冲输入流。
            //BufferedOutputStream(OutputStream out)：创建一个新的缓冲输出流。

        //从a.txt读取文件，写入到b.txt文件中
        // 创建字节缓冲输入流
//        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.txt"));
//
//        // 创建字节缓冲输出流
//        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("b.txt"));
//
//        // 读写数据
//        int len;
//        byte[] bytes = new byte[8*1024];
//        while ((len = bis.read(bytes)) != -1) {
//            bos.write(bytes, 0 , len);
//        }
//
//        bos.close();
//        bis.close();



        System.out.println("字符缓冲流");

        //字符缓冲流
            //BufferedReader(Reader in)：创建一个新的缓冲输入流。
            //BufferedWriter(Writer out)：创建一个新的缓冲输出流。

            //特有方法
            //BufferedReader：readLine(): 读一行文字,读不到换行符号
            //BufferedWriter：newLine(): 新建一行,写一行,换行,无敌的,每个操作系统都表示换行

        BufferedReader br = new BufferedReader(new FileReader("a.txt"));

        BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));

        String line  = null;
        while ((line = br.readLine()) != null){
            bw.write(line);
            bw.newLine();//所有系统都可以换行
        }

        bw.close();
        br.close();

    }
}
